package com.web.dao.impl;

import com.web.dao.CourseDAO;
import com.web.entity.Course;
import com.web.util.DataSourceUtils;
import com.web.util.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Songzzz
 * @Description
 * @Date 2025/3/6 17:10
 */
public class CourseDAOImpl implements CourseDAO {
    @Override
    public List<Course> selectAllCourse() {
        // 调用 JDBCUtils.query 获取课程列表
        System.out.println("CourseDAOImpl.selectAllCourse is called!");
        List<Course> courses = JDBCUtils.query(Course.class, "select * from course");

        // 检查 courses 是否为 null
        if (courses == null) {
            // 如果为 null，返回一个空列表
            return new ArrayList<>();
        }

        // 如果 courses 不为 null，直接返回
        return courses;
    }
    @Override
    public Course addCourse(Integer id,String name,Integer time,Integer point){
        // SQL 插入语句
        String sql = "INSERT INTO course(id,name,time,point) VALUES (?, ?, ?, ? )";
        // 参数数组
        Object[] args = {id,name,time,point};
        try (Connection conn = DataSourceUtils.getConnection();
             PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { // 启用获取自增 ID
            // 设置参数
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i + 1, args[i]);
            }
            // 执行插入操作
            int rows = ps.executeUpdate();
            // 判断是否插入成功
            if (rows > 0) {
                // 获取自增 ID
                return new Course(id,name,time,point);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 插入失败，返回 null
        return null;
    }
}
